package tec;

abstract class TestPassagerAbstrait{
    
    void lancer(){
	int nbTest = 0;
	testNom();
	System.out.print('.'); nbTest++;

	testEstDehors();
	System.out.print('.'); nbTest++;

	testEstAssis();
	System.out.print('.'); nbTest++;

	testEstDebout();
	System.out.print('.'); nbTest++;

	testAccepterSortie();
	System.out.print('.'); nbTest++;

	testAccepterPlaceAssise();
	System.out.print('.'); nbTest++;

	testAccepterPlaceDebout();
	System.out.print('.'); nbTest++;	
	
	testSortie();
	System.out.print('.'); nbTest++;

    }

    

    void testNom(){
	PassagerAbstrait passager = creerPassager("Marc", 5);
	assert passager.nom() == "Marc" : "testNom Fail";
    }
    
    void testEstDehors(){
	PassagerAbstrait passager = creerPassager("Marc", 5);
	
	assert passager.estDehors() == true : "TestEstDehors fail";
    }
    
    void testEstAssis(){
	PassagerAbstrait passager = creerPassager("Marc", 5);
	passager.accepterPlaceAssise();
	assert passager.estAssis() == true : "TestEstAssis fail";
    }
    
    void testEstDebout(){
	PassagerAbstrait passager = creerPassager("Marc", 5);
	passager.accepterPlaceDebout();
	assert passager.estDebout() == true : "TestEstDebout fail";
    }
    
    void testAccepterSortie(){
	PassagerAbstrait passager = creerPassager("Marc", 5);
	passager.accepterPlaceAssise();
	passager.accepterSortie();
	assert passager.estDehors() == true : "TestAccepterSortie fail";
    }

    void testAccepterPlaceAssise(){
	
	PassagerAbstrait passagerDehors = creerPassager("Marc", 5);
	PassagerAbstrait passagerDebout = creerPassager("Marc", 5);
	
	passagerDehors.accepterPlaceAssise();
	passagerDebout.accepterPlaceAssise();
	
	assert passagerDebout.estAssis() == true : "TestAccepterPlaceAssise fail";
	assert passagerDehors.estAssis() == true : "TestAccepterPlaceAssise fail"; 
	
	
    }

    void testAccepterPlaceDebout(){
	PassagerAbstrait passagerDehors = creerPassager("Marc", 5);
	PassagerAbstrait passagerAssis = creerPassager("Marc", 5);
	
	passagerDehors.accepterPlaceDebout();
	passagerAssis.accepterPlaceDebout();
	
	assert passagerAssis.estDebout() == true : "TestAccepterPlaceDebout fail";
	assert passagerDehors.estDebout() == true : "TestAccepterPlaceDebout fail";
    }

    void testSortie(){
	PassagerAbstrait passager = creerPassager("Marc", 5);
	FauxBus bus = new FauxBus();
	
	
	passager.nouvelArret(bus, 5);
	assert( "demanderSortie" == bus.messages.getLast()) : "Test Sortie failed";
    }
	
    abstract protected PassagerAbstrait creerPassager(String nom, int destination);
    
}